package common

import (
	"fmt"
	_ "github.com/go-sql-driver/mysql"
	"github.com/jinzhu/gorm"
	"time"
)

var (
	DB *gorm.DB
)

func SetupDbLink() error {
	var err error
	var dataSource string
	switch DatabaseSetting.DBType {
	case "mysql":
		dataSource = fmt.Sprintf("%s:%s@(%s:%s)/%s?charset=%s&parseTime=True&loc=Local", DatabaseSetting.UserName, DatabaseSetting.Password, DatabaseSetting.Host, DatabaseSetting.Port, DatabaseSetting.DBName, DatabaseSetting.Charset)
		break
	}

	DB, err = gorm.Open(DatabaseSetting.DBType, dataSource)
	if err != nil {
		panic(err)
	}
	DB.Debug()
	DB.LogMode(true)

	sqlDB := DB.DB()
	// SetMaxIdleConns 设置空闲连接池中连接的最大数量
	sqlDB.SetMaxIdleConns(DatabaseSetting.MaxIdleConns)

	// SetMaxOpenConns 设置打开数据库连接的最大数量。
	sqlDB.SetMaxOpenConns(DatabaseSetting.MaxOpenConns)

	// SetConnMaxLifetime 设置了连接可复用的最大时间。
	sqlDB.SetConnMaxLifetime(time.Hour)
	return nil
}
